/**
 * @author wangj881
 * @date 2024-11-19 9:35
 */
public class L209_2 {

    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5};
        int target = 11;
        int i = new Solution().minSubArrayLen(target, nums);
        System.out.println(i);
    }

    static class Solution {
        public int minSubArrayLen(int target, int[] nums) {
            int left = 0;
            int length = Integer.MAX_VALUE;
            for (int right = 0; right < nums.length; right++) {
                target -= nums[right];
                while (target <= 0) {
                    length = Math.min(length, right - left + 1);
                    target += nums[left];
                    left++;
                }
            }
            return length == Integer.MAX_VALUE ? 0 : length;
        }
    }

//    static class Solution {
//        public int minSubArrayLen(int target, int[] nums) {
//            int left = 0;
//            int sum = 0;
//            int result = Integer.MAX_VALUE;
//            for (int right = 0; right < nums.length; right++) {
//                sum += nums[right];
//                while (sum >= target) {
//                    result = Math.min(result, right - left + 1);
//                    sum -= nums[left++];
//                }
//            }
//            return result == Integer.MAX_VALUE ? 0 : result;
//        }
//
//    }
}
